#pragma once
/*--------------------------------------------------------------------------------
 * Adaptive Intelligence - Foundation Framework Class Library
 * Version 2.00
 * 
 * I/O Save Failed Event Arguments Class
 *      An event arguments class for the <b>IoSaveFailed</b> event.
 *------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
 * System Imports
 *------------------------------------------------------------------------------*/
#include "stdafx.h"
using namespace System;

namespace Adaptive
{
	namespace Foundation
	{
		namespace IO
		{
			/// <summary>
			/// An event arguments class for the <b>IoSaveFailed</b> event.
			/// </summary>
			public ref class IoSaveFailedEventArgs : public System::EventArgs 
			{
			public:
				/*--------------------------------------------------------------------------------
				 * Constructor / Dispose / Destructor Methods
				 *------------------------------------------------------------------------------*/
				#pragma region Constructor / Dispose / Destructor Methods
				/// <summary>
				/// Initializes a new instance of the class.
				/// </summary>
				/// <remarks>
				/// This is the default constructor.
				/// </remarks>
				IoSaveFailedEventArgs();
				/// <summary>
				/// Initializes a new instance of the class tp the specified values.
				/// </summary>
				/// <param name="fileName">The name of the file that was being loaded.</param>
				IoSaveFailedEventArgs(String^ fileName);
				/// <summary>
				/// Initializes a new instance of the class tp the specified values.
				/// </summary>
				/// <param name="fileName">The name of the file that was being loaded.</param>
				/// <param name="exception">The exception which occurred.</param>
				IoSaveFailedEventArgs(String^ fileName, Exception^ exception);
				/// <summary>
				/// Class destructor.
				/// </summary>
				~IoSaveFailedEventArgs();
				#pragma endregion
				
				/*--------------------------------------------------------------------------------
				 * Public Properties
				 *------------------------------------------------------------------------------*/
				#pragma region Public Properties
				/// <summary>
				/// Gets the name of the file that failed to load.
				/// </summary>
				/// <value>
				/// A file name.
				/// </value>
				property String^ FileName { String^ get(); }
				/// <summary>
				/// Gets the exception that resulted from the failure.
				/// </summary>
				/// <value>
				/// A <see cref="System::Exception"/> object.
				/// </value>
				property Exception^ IOException { Exception^ get(); }
				#pragma endregion

			private:
				/*--------------------------------------------------------------------------------
				 * Private Member Declarations
				 *------------------------------------------------------------------------------*/
				#pragma region Private Member Declarations
				/// <summary>
				/// Gets the name of the file that failed to load.
				/// </summary>
				String^			_fileName;
				/// <summary>
				/// Gets the exception that resulted from the failure.
				/// </summary>
				Exception^		_ioException;
				#pragma endregion

			};
		}
	}
}
